import { IPSModelObject } from '../../ipsmodel-object';
import { IPSNavigateParamContainer } from '../../control/ipsnavigate-param-container';
import { IPSDEOPPriv } from '../priv/ipsdeoppriv';
import { IPSLanguageRes } from '../../res/ipslanguage-res';
import { IPSSysImage } from '../../res/ipssys-image';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDEDRItem
 */
export interface IPSDEDRItem extends IPSModelObject, IPSNavigateParamContainer {
  /**
   * 标题语言资源
   *
   * @type {IPSLanguageRes}
   */
  getCapPSLanguageRes(): IPSLanguageRes | null;

  /**
   * 标题语言资源
   *
   * @type {IPSLanguageRes}
   */
  get capPSLanguageRes(): IPSLanguageRes | null;

  /**
   * 标题语言资源（必须存在）
   *
   * @type {IPSLanguageRes}
   */
  getCapPSLanguageResMust(): IPSLanguageRes;

  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 计数项标识
   * @type {string}
   */
  counterId: string;

  /**
   * 启用模式
   * @description 值模式 [关系界面组成员启用模式] {ALL：全部启用、 INWF：流程中启用、 ALLWF：全部流程状态启用、 EDIT：编辑时启用、 DEOPPRIV：实体操作标识、 CUSTOM：自定义 }
   * @type {( string | 'ALL' | 'INWF' | 'ALLWF' | 'EDIT' | 'DEOPPRIV' | 'CUSTOM')}
   */
  enableMode: string | 'ALL' | 'INWF' | 'ALLWF' | 'EDIT' | 'DEOPPRIV' | 'CUSTOM';

  /**
   * 关系项类型
   * @description 值模式 [云实体数据关系项类型] {DER1N：1:N关系、 SYSDER1N：系统1:N关系、 CUSTOM：自定义关系 }
   * @type {( string | 'DER1N' | 'SYSDER1N' | 'CUSTOM')}
   */
  itemType: string | 'DER1N' | 'SYSDER1N' | 'CUSTOM';

  /**
   * 项图标资源对象
   *
   * @type {IPSSysImage}
   */
  getPSSysImage(): IPSSysImage | null;

  /**
   * 项图标资源对象
   *
   * @type {IPSSysImage}
   */
  get psSysImage(): IPSSysImage | null;

  /**
   * 项图标资源对象（必须存在）
   *
   * @type {IPSSysImage}
   */
  getPSSysImageMust(): IPSSysImage;

  /**
   * 视图父数据对象
   * @type {IModel}
   */
  parentDataJO: IModel;

  /**
   * 判断输出实体操作标识
   *
   * @type {IPSDEOPPriv}
   */
  getTestPSDEOPPriv(): IPSDEOPPriv | null;

  /**
   * 判断输出实体操作标识
   *
   * @type {IPSDEOPPriv}
   */
  get testPSDEOPPriv(): IPSDEOPPriv | null;

  /**
   * 判断输出实体操作标识（必须存在）
   *
   * @type {IPSDEOPPriv}
   */
  getTestPSDEOPPrivMust(): IPSDEOPPriv;

  /**
   * 视图参数对象
   * @type {IModel}
   */
  viewParamJO: IModel;
}
